<?php

namespace SisGG\FinalBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use SisGG\FinalBundle\Entity\Ciudad;
use SisGG\FinalBundle\Form\CiudadType;
use SisGG\FinalBundle\Form\ProvinciaType;
use SisGG\FinalBundle\Entity\Provincia;
use SisGG\FinalBundle\Entity\Empresa;
/**
 * Description of CiudadController
 *
 * @author martin
 */
class CiudadController extends Controller {
     public function nuevaCiudadAction(){
        $formulario = $this->createForm(new CiudadType());
        $formProv = $this->createForm(new ProvinciaType());
         $provincias = $this->getDoctrine()->getEntityManager()->getRepository("SisGGFinalBundle:Provincia")->findAll();
        $parameters = array('form'=>$formulario->createView(), 'formProv'=>$formProv->createView(), 'provincias'=>$provincias, 'msj'=>null,'error'=>null);
        return $this->render('SisGGFinalBundle:Ciudad:nuevaCiudad.html.twig', $parameters);
    }
    
    public function altaCiudadAction(Empresa $empresa = null){
        $ciudad = new Ciudad();
        $empresa = $this->getEmpresa();
        $formulario = $this->createForm(new CiudadType,$ciudad);
        $formulario->bindRequest($this->getRequest());
      if ($formulario->isValid()){
            $r = $empresa->agregarCiudad ($ciudad, $this);
            if ($r == null) {
                $msj = "La Ciudad " . $ciudad->getNombre() . " ha sido exitosamente registrada.";
                $this->getRequest()->getSession()->set('msj', $msj);
                return $this->redirect($this->generateUrl('ciudades', array( 'msj'=>null,'error' => null)));
            } else {
                return $this->render('SisGGFinalBundle:Ciudad:nuevaCiudad.html.twig', array('form' => $formulario->createView(),'error' => $r));
            }
       }
        $parameters = array('form'=>$formulario->createView(), 'error'=>"Verifique los campos cargados.".$ciudad->getProvincia());
        return $this->render('SisGGFinalBundle:Ciudad:nuevaCiudad.html.twig', $parameters);
    }
    
    public function editarCiudadAction(){
        $em = $this->getDoctrine()->getEntityManager();
        $repositorio = $em->getRepository('SisGGFinalBundle:Ciudad'); 
        $ciudad = $repositorio->find($this->getRequest()->get('id'));
        $formulario = $this->createForm(new CiudadType(),$ciudad);
        $this->getRequest()->getSession()->set('idCiu', $ciudad->getId());
        $parameters = array('form'=>$formulario->createView(),'error'=>null);
        return $this->render('SisGGFinalBundle:Ciudad:editarCiudad.html.twig', $parameters);       
    }
    
    public function modificarCiudadAction(Empresa $empresa = null){
        $em = $this->getDoctrine()->getEntityManager();
        $empresa = $this->getEmpresa();
        $repositorio = $em->getRepository('SisGGFinalBundle:Ciudad'); 
        $ciudad = $repositorio->find($this->getRequest()->getSession()->get('idCiu'));
        $formulario = $this->createForm(new CiudadType(),$ciudad);
        $formulario->bindRequest($this->getRequest()); 
        if ($formulario->isValid()) {
               // $em->flush();
               // return $this->redirect($this->generateUrl('ciudades'));
             $r = $empresa->modificarCiudad($ciudad, $this);
            if ($r == null) {
                $msj = "La Ciudad " . $ciudad->getNombre() . " ha sido exitosamente modificada.";
                $this->getRequest()->getSession()->set('msj', $msj);
                return $this->redirect($this->generateUrl('ciudades', array('msj' => null, 'error' => null)));
            } else {
                return $this->render('SisGGFinalBundle:Ciudad:editarCiudad.html.twig', array('form' => $formulario->createView(), 'id' => $ciudad->getId(), 'error' => $r));
            }
        }
        return $this->render('SisGGFinalBundle:Ciudad:editarCiudad.html.twig', array('form' => $formulario->createView(), 'id' => $ciudad->getId(), 'error' =>null));
    }
    
    public function eliminarCiudadAction(){
        $empresa = $this->getEmpresa();
        $em = $this->getDoctrine()->getEntityManager();
        $repositorio = $em->getRepository('SisGGFinalBundle:Ciudad'); 
        $ciudad = $repositorio->find($this->getRequest()->get('id'));
        $ciudades=$repositorio->findAll();
        $r = $empresa->eliminarCiudad($ciudad, $this);
        if ($r == null) {
            $msj = "La Ciuadad " . $ciudad->getNombre() . " ha sido exitosamente eliminada.";
            $this->getRequest()->getSession()->set('msj', $msj);
            return $this->redirect($this->generateUrl('ciudades', array('msj' => null, 'error' => null)));
        } else {
            return $this->render('SisGGFinalBundle:Ciudad:ciudades.html.twig', array( 'msj' => null, 'ciudades'=>$ciudades,'error' => $r));
        }
    }

    public function ciudadesAction(){
        $repositorio = $this->getDoctrine()->getRepository('SisGGFinalBundle:Ciudad');
        $ciudades = $repositorio->findAll();
        $msj=$this->getRequest()->getSession()->get('msj');
        $parameters = array('ciudades'=>$ciudades,  'msj' => $msj, 'error'=>null);
        $this->getRequest()->getSession()->clear();
        return $this->render('SisGGFinalBundle:Ciudad:ciudades.html.twig', $parameters);
    }
    
    public function ciudadesProvinciaAction(){
        $provincia = $this->getDoctrine()->getRepository('SisGGFinalBundle:Provincia')->find($this->getRequest()->get('id'));
        $ciudades = $this->getDoctrine()->getRepository('SisGGFinalBundle:Ciudad')->findBy(array('provincia'=>$provincia));
        $parameters = array('ciudades'=>$ciudades);
        return $this->render('SisGGFinalBundle:Ciudad:ciudadesProvincias.html.twig', $parameters);
    }
    
    public function getEmpresa() {
        $em = $this->getDoctrine()->getEntityManager();
        $empresa = $em->getRepository('SisGGFinalBundle:Empresa')->find(1);
        return $empresa;
    }
    
    
}